// 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段，同一字母最多出现在一个片段中。
// 返回一个表示每个字符串片段的长度的列表。

// 示例：
// 输入：S = "ababcbacadefegdehijhklij"
// 输出：[9,7,8]
// 解释：
// 划分结果为 "ababcbaca", "defegde", "hijhklij"。
// 每个字母最多出现在一个片段中。
// 像 "ababcbacadefegde", "hijhklij" 的划分是错误的，因为划分的片段数较少。

// 示：
//     S的长度在[1, 500]之间。
//     S只包含小写字母 'a' 到 'z' 。

////////////思路：求得每个字母出现的最后的位置，遍历，如果当前字母位置与最远位置相等，则为分界点

/**
 * @param {string} s
 * @return {number[]}
 */
var partitionLabels = function(s) {
    let map = new Map();
    for(let i = 0; i < s.length; i++) {
        map.set(s[i], i);
    }
    let left = 0, right = 0;
    let result = [];
    for(let i = 0; i < s.length; i++) {
        right = Math.max(right, map.get(s[i]));
        if (i === right) {
            result.push(right - left + 1);
            left = i + 1;
            
        }
    }
    return result;
};
console.log(partitionLabels("ababcbacadefegdehijhklij"));
